<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <div>水果列表</div>
        <div>
            <span>
                <input type="text" v-model="fname">
                <button @click="add">添加</button>
                <button @click="del">删除</button>
                <button @click="change">替换</button>

            </span>
        </div>
        <ul>
            <li v-for='item in fruits'>{{item}}</li>
        </ul>
    </div>
    <script type="text/javascript" src="js/vue.js"></script>
    <script>
        /**
            数组相关的API
            变异方法（修改原有的数据）
            2 替换数组（生成新的数组）
        */

        var vm = new Vue({
            el: '#app',
            data: {
                fname: '',
                fruits: ['apple', 'orange', 'banana'],
               },
               methods: {
                add() {
                    this.fruits.push(this.fname);
                },
                del() {
                    // 从元素的末尾删除一个元素！
                    this.fruits.pop();
                },
                change: function() {
                    // 因为生成的是一个新的数组，所以得把新生成的这个数组赋值给原来的数组
                    // slice() 方法返回一个新的数组对象，这一对象是一个由 begin 和 end 决定的原数组的浅拷贝（包括 begin，不包括end）。原始数组不会被改变。
                    // slice的特点截取的时候是包括开始的元素（也就是begin），如果有开始和结束的截取的话，那么就包括开始，但不包括结束！
                    // 替换数组（生成新的数组）来对数组进行新的更新需要重新对原始的数组进行赋值 这样才能够满足我们的需求！ 而对变异数组就不需要，因为他默认就是响应式的！
                    this.fruits = this.fruits.slice(0, 2);
                }
               }
        })
    </script>
</body>

</html>